package com.lnsoft.cac.server.handle.codec.frameMessage;


import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Data;
import lombok.NonNull;

@Data
/**
 * 配置/状态交互---装置工作状态信息查询
 * */
public class Cfg_Status_Cfm {
    private int StatTime;               //4byte         采集时间
    private int Total_Working_Time;     //4byte         工作总时间（单位：小时）
    private int Working_Time;           //4byte         本次连续工作时间（单位：小时）

    public ByteBuf toByteBuf() throws Exception{
        if (!Util.statTimeIsAvailable(StatTime)) {
            throw new Exception("采集时间 设置异常");
        }
        ByteBuf bf = Unpooled.buffer(12);
        bf.writeIntLE(StatTime);
        bf.writeIntLE(Total_Working_Time);
        bf.writeIntLE(Working_Time);
        return bf;
    }


    //  解析 { 配置/状态交互---装置工作状态信息查询} 帧报文内容区 到消息体中
    public static Cfg_Status_Cfm decFrameBody(@NonNull byte[] frameBody) throws Exception {
        ByteBuf bf = Unpooled.wrappedBuffer(frameBody);
        Cfg_Status_Cfm msg = new Cfg_Status_Cfm();
        int len = frameBody.length;
        if (len == 0) {
            return null;
        }
        if (len != 12) {
            throw new Exception("frameBody 异常");
        }
        msg.setStatTime(bf.getIntLE(0) & 0xFFFFFFFF);
        msg.setTotal_Working_Time(bf.getIntLE(4) & 0xFFFFFFFF);
        msg.setWorking_Time(bf.getIntLE(8) & 0xFFFFFFFF);
        return msg;
    }

}
